package com.atguigu.gmall.activity.service;

import com.atguigu.gmall.model.activity.ActivityInfo;
import com.atguigu.gmall.model.activity.ActivityRule;
import com.atguigu.gmall.model.activity.ActivityRuleVo;
import com.atguigu.gmall.model.cart.CartInfo;
import com.atguigu.gmall.model.cart.CartInfoVo;
import com.atguigu.gmall.model.order.OrderDetail;
import com.atguigu.gmall.model.product.SkuInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * @author atguigu-mqx
 */
public interface ActivityInfoService extends IService<ActivityInfo> {

    /**
     * 定义一个查询所有活动的数据接口
     * @param pageParam
     * @return
     */
    IPage<ActivityInfo> getPage(Page<ActivityInfo> pageParam);

    /**
     * 保存方法
     * @param activityRuleVo
     */
    void saveActivityRule(ActivityRuleVo activityRuleVo);

    /**
     * 根据关键字获取skuInfo 列表
     * @param keyword
     * @return
     */
    List<SkuInfo> findSkuInfoByKeyword(String keyword);

    /**
     * 根据活动Id 获取数据 ，并返回一个map 集合数据！
     * @param id
     * @return
     */
    Map<String, Object> findActivityRuleList(Long id);

    /**
     * 根据skuId 获取到活动规则列表
     * @param skuId
     * @return
     */
    List<ActivityRule> findActivityRule(Long skuId);

    /**
     * 将所有的购物项集合做为参数传递进来，
     * @param cartInfoList
     * @return
     */
    List<CartInfoVo> findCartActivityRuleMap(List<CartInfo> cartInfoList,Map<Long, Long> skuIdToActivityIdMap);

    /**
     *  根据购物项中的活动Id 获取到最优的活动规则！
      * @param orderDetailList
     * @return
     */
    Map<Long,ActivityRule> findTradeActivityRuleMap(List<OrderDetail> orderDetailList);

}
